﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Windows.Forms;


public partial class Pages_Default : System.Web.UI.Page
{
    protected bool primerLoad = true;
    protected void Page_Load(object sender, EventArgs e)
    {
       HttpCookie cookie = Request.Cookies["adminLogged"];
        
        if (cookie == null)
        {
            Response.Redirect("loginError.aspx");
        }

        if (primerLoad)
        {
            bActualizar.Visible = false;
            bEliminar.Visible = false;
            primerLoad = false;
            lblValidarRut.Visible = false;
            lblNombreVacio.Visible = false;
            lblUbicacionVacia.Visible = false;
        }
        
    }

 
    protected string mensaje(string mensaje, string titulo, MessageBoxButtons botones, MessageBoxIcon icono) 
    {
        DialogResult resultado = MessageBox.Show(mensaje, titulo, botones,icono);
        if (resultado == DialogResult.Yes) return "yes";
        else if (resultado == DialogResult.No) return "no";
        else return "otro";  
    }

    protected void resetCampos() 
    {
        tbRut.Text = "";
        tbVerificador.Text = "";
        tbNombre.Text = "";
        tbUbicacion.Text = "";
        ddlTipo.SelectedIndex = 0;
        ddlEstado.SelectedIndex =0;
    
    }
    protected bool existenCamposVacios()
    {
        bool resultado = false;
        if (tbRut.Text == "" || verificarRut(tbRut.Text, tbVerificador.Text) == false){resultado = true; lblValidarRut.Visible = true;}
        else lblValidarRut.Visible = false;
        if (tbNombre.Text == ""){ resultado = true; lblNombreVacio.Visible = true;}
        else lblNombreVacio.Visible = false;
        if (tbUbicacion.Text == ""){ resultado = true; lblUbicacionVacia.Visible = true;}
        else lblUbicacionVacia.Visible = false;

        return resultado;
    }

    protected void bIngresar_Click(object sender, EventArgs e)
    {
        //if (tbVerificador.Text.CompareTo(verificarRut(tbRut.Text)) == 0){
        
            if (!existenCamposVacios())
            {
                int tipoAgente;
                bool estadoAgente;

                if (ddlTipo.Text.CompareTo("Interno") == 0) tipoAgente = 0;
                else tipoAgente = 1;

                if (ddlEstado.SelectedValue.CompareTo("Vigente") == 0) estadoAgente = true;
                else estadoAgente = false;

                string confirme = "Esta seguro de ingresar al agente de RUT\n\n" + tbRut.Text+"-"+tbVerificador.Text+"\n\ncon los siguientes datos:\n\nNombre = " + tbNombre.Text + " \nUbicacion = " + tbUbicacion.Text + " \nTipo = " + ddlTipo.SelectedValue + "\nEstado = " + ddlEstado.SelectedValue + "\n";
                string respuesta = mensaje(confirme, "CONFIRME EL INGRESO", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (respuesta.CompareTo("yes") == 0)
                {

                    AgentesBLL agentebll = new AgentesBLL();
                    int filasAfectadas = agentebll.insertarAgente(tbRut.Text + "-" + tbVerificador.Text, tbNombre.Text, tbUbicacion.Text, tipoAgente, estadoAgente);

                    if (filasAfectadas > 0) mensaje("Agente ingresado exitosamente", "EXITO!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    else mensaje("Ocurrio un error. Vuelva a intentar.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    gvAgentes.DataBind();
                    setBotonesNuevo();
                }
            }
        
        //else mensaje("RUT INCORRECTO", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    }
    protected void bActualizar_Click(object sender, EventArgs e)
    {
        if (!existenCamposVacios())
        {
            int tipoAgente;
            bool estadoAgente;

            if (ddlTipo.Text.CompareTo("Interno") == 0) tipoAgente = 0;
            else tipoAgente = 1;

            if (ddlEstado.SelectedValue.CompareTo("Vigente") == 0) estadoAgente = true;
            else estadoAgente = false;

            string confirme = "Esta seguro de actualizar al agente de RUT\n\n" + tbRut.Text + "-" + tbVerificador.Text + "\n\ncon los siguientes datos:\n\nNombre = " + tbNombre.Text + " \nUbicacion = " + tbUbicacion.Text + " \nTipo = " + ddlTipo.SelectedValue + "\nEstado = " + ddlEstado.SelectedValue + "\n";
            string respuesta = mensaje(confirme, "CONFIRME LA ACTUALIZACION", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if(respuesta.CompareTo("yes")==0){
            AgentesBLL agentebll = new AgentesBLL();
            int filasAfectadas = agentebll.actualizarAgente(tbNombre.Text, tbUbicacion.Text, tipoAgente, estadoAgente, tbRut.Text + "-" + tbVerificador.Text);

            if (filasAfectadas > 0) mensaje("Agente actualizado exitosamente","EXITO!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
            else mensaje("Ocurrio un error. Vuelva a intentar.","ERROR",MessageBoxButtons.OK,MessageBoxIcon.Error);
            
            gvAgentes.DataBind();
            setBotonesNuevo();
            }
        }
    }
    protected void bEliminar_Click(object sender, EventArgs e)
    {
        string confirme = "Esta seguro de eliminar al agente de RUT\n\n" + tbRut.Text + "-" + tbVerificador.Text + "\n\ncon los siguientes datos:\n\nNombre = " + tbNombre.Text + " \nUbicacion = " + tbUbicacion.Text + " \nTipo = " + ddlTipo.SelectedValue + "\nEstado = " + ddlEstado.SelectedValue + "\n";
        string respuesta = mensaje(confirme, "CONFIRME LA ELIMINACION", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (respuesta.CompareTo("yes") == 0)
        {
            AgentesBLL agentebll = new AgentesBLL();
            int filasAfectadas = agentebll.eliminarAgente(tbRut.Text + "-" + tbVerificador.Text);
            if (filasAfectadas > 0) mensaje("Agente eliminado exitosamente", "EXITO!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else mensaje("Ocurrio un error. Vuelva a intentar.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            setBotonesNuevo();
            gvAgentes.DataBind();
        }
    }
    protected void bNuevo_Click(object sender, EventArgs e)
    {
       setBotonesNuevo();
    }

    protected void setBotonesNuevo() {
        resetCampos();
        bIngresar.Visible = true;
        bActualizar.Visible = false;
        bEliminar.Visible = false;
        tbRut.Enabled = true;
        tbVerificador.Enabled = true;
    }

    protected void bBuscar_Click(object sender, EventArgs e)
    {
     
    }

    protected void gvAgentes_SelectedIndexChanged1(object sender, EventArgs e)
    {
        DataKey key = gvAgentes.SelectedDataKey;
        string rutAgente = (string)key.Value;

        AgentesBLL agentebll = new AgentesBLL();
        DataSetCarpay.AGENTEDataTable dt = agentebll.getAgente(rutAgente);
        string[] rutDividido = rutAgente.Split('-');
        tbRut.Text = rutDividido[0];
        tbVerificador.Text = rutDividido[1];

        tbNombre.Text = (string)dt.Rows[0][dt.NOMBRE_AGENTEColumn];
        tbUbicacion.Text = (string)dt.Rows[0][dt.UBICACION_ACTUAL_AGENTEColumn];
        if ((int)dt.Rows[0][dt.TIPO_AGENTEColumn] == 1) ddlTipo.SelectedValue = "Interno";
        else ddlTipo.SelectedValue = "Externo";
        if ((bool) dt.Rows[0][dt.ESTADO_AGENTEColumn]) ddlEstado.SelectedValue = "Vigente";
        else ddlEstado.SelectedValue = "Retirado";
        tbRut.Enabled = false;
        tbVerificador.Enabled = false;
        bIngresar.Visible = false;
        bActualizar.Visible = true;
        bEliminar.Visible = true;
    }

   protected bool verificarRut(string rutString,string digitoVerificador)
    {
        if (rutString.CompareTo("") == 0 || digitoVerificador.CompareTo("") == 0) return false;
        int rut = int.Parse(rutString);
        int Digito;
        int Contador;
        int Multiplo;
        int Acumulador;
        string RutDigito;

        Contador = 2;
        Acumulador = 0;

        while (rut != 0)
        {
            Multiplo = (rut % 10) * Contador;
            Acumulador = Acumulador + Multiplo;
            rut = rut / 10;
            Contador = Contador + 1;
            if (Contador == 8)
            {
                Contador = 2;
            }

        }

        Digito = 11 - (Acumulador % 11);
        RutDigito = Digito.ToString().Trim();
        if (Digito == 10)
        {
            RutDigito = "K";
        }
        if (Digito == 11)
        {
            RutDigito = "0";
        }
        if (RutDigito.CompareTo(digitoVerificador) == 0) return true;
        else return false;
    }








}
